package com.sdhs.costcontrol.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sdhs.businessfile.domain.BusinessFile;
import com.sdhs.common.annotation.Excel;
import com.sdhs.common.core.domain.BaseEntity;

import lombok.Data;

/**
 * 合同支付跟踪对象 gc_control_contract_pay
 * 
 * @author wanglei
 * @date 2025-03-14
 */
@Data
public class GcControlContractPay extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 合同支付跟踪主键 */
    private Long id;

    /** 关联项目id */
    @Excel(name = "关联项目id")
    private Long projectId;

    /** 创建人 */
    @Excel(name = "创建人")
    private String creater;

    /** 修改人 */
    @Excel(name = "修改人")
    private String updater;

    /** 是否删除，删除标记（0正常 1删除） */
    @Excel(name = "是否删除，删除标记", readConverterExp = "0=正常,1=删除")
    private String isDelete;

    /** 采购合同id */
    @Excel(name = "采购合同id")
    private String contractId;

    /** 填报日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "填报日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date fillingDate;

    /** 支付日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentDate;

    /** 本次支付金额 */
    @Excel(name = "本次支付金额")
    private BigDecimal thisPaymentAmount;

    /** 本次支付比例 */
    @Excel(name = "本次支付比例")
    private BigDecimal thisPaymentRatio;

    /** 本次发票金额 */
    @Excel(name = "本次发票金额")
    private BigDecimal thisInvoiceAmount;

    /** 本次发票比例 */
    @Excel(name = "本次发票比例")
    private BigDecimal thisInvoiceRatio;

    /**累计支付金额*/
    private BigDecimal totalPaymentAmount;
    /**累计支付比例*/
    private BigDecimal totalPaymentRatio;
    /**累计发票金额 */
    private BigDecimal totalInvoiceAmount;
    /**累计发票金比例 */
    private BigDecimal totalInvoiceRatio;

    /**已开票金额（不含税）*/
    private BigDecimal notInvoicedAmount;

    /**未开发票金额（含税）*/
    private BigDecimal uninvoicedAmount;

    /**未开发票比例（含税）*/
    private BigDecimal proportionUnissuedInvoices;

    /**成本确认金额(支出类合同)*/
    private BigDecimal notCostConfirmationAmount;

    /**成本确认金额(支出类合同)*/
    private BigDecimal costConfirmationAmount;


    /**成本确认比例(支出类合同)*/
    private BigDecimal costConfirmationRatio;

    /** 应付账款(支出类合同)*/
    private BigDecimal accountsPayable;

    /** 合同名称 */
    private String contractName;
    
    private List<BusinessFile> fileList;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("projectId", getProjectId())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("creater", getCreater())
            .append("updater", getUpdater())
            .append("isDelete", getIsDelete())
            .append("contractId", getContractId())
            .append("fillingDate", getFillingDate())
            .append("paymentDate", getPaymentDate())
            .append("thisPaymentAmount", getThisPaymentAmount())
            .append("thisPaymentRatio", getThisPaymentRatio())
            .append("thisInvoiceAmount", getThisInvoiceAmount())
            .append("thisInvoiceRatio", getThisInvoiceRatio())
            .append("notInvoicedAmount", getNotInvoicedAmount())
            .append("uninvoicedAmount", getUninvoicedAmount())
            .append("proportionUnissuedInvoices", getProportionUnissuedInvoices())
            .append("costConfirmationAmount", getCostConfirmationAmount())
            .append("costConfirmationRatio", getCostConfirmationRatio())
            .append("accountsPayable", getAccountsPayable())
            .toString();
    }
}
